home *** CD-ROM | disk | FTP | other *** search
- /*
- * $Id: w )Ød; /* 2.2 1999/09/21 18:48:27 lhecking Exp $
- */
-
- /* GNUPLOT - win/wgnuplib.h */
-
- /*[
- * Copyright 1982 - 1993, 1998 Russell Lang
- *
- * Permission to use, copy, and distribute this software and its
- * documentation for any purpose with or without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation.
- *
- * Permission to modify the software is granted, but not the right to
- * distribute the complete modified source code. Modifications are to
- * be distributed as patches to the released version. Permission to
- * distribute binaries produced by compiling modified sources is granted,
- * provided you
- * 1. distribute the corresponding source modifications from the
- * released version in the form of a patch file along with the binaries,
- * 2. add special version identification to distinguish your version
- * in addition to the base release version number,
- * 3. provide your name and address as the primary contact for the
- * support of your modified version, and
- * 4. retain our contact information in regard to use of the base
- * software.
- * Permission to distribute the released version of the source code along
- * with corresponding source modifications in the form of a patch file is
- * granted with same provisions 2 through 4 for binary distributions.
- *
- * This software is provided "as is" without express or implied warranty
- * to the extent permitted by applicable law.
- ]*/
-
- /*
- * AUTHORS
- *
- * Russell Lang
- *
- * Send your comments or suggestions to
- * info-gnuplot@dartmouth.edu.
- * This is a mailing list; to join it send a note to
- * majordomo@dartmouth.edu.
- * Send bug reports to
- * bug-gnuplot@dartmouth.edu.
- */
-
- /* this file contains items to be visible outside wgnuplot.dll */
-
- #ifdef _WINDOWS
- #define _Windows
- #endif
-
- /* HBB 19990506: The following used to be #ifdef __DLL__.
- * But _export is needed outside the DLL, as well. The long-standing
- * bug crashing 16bit wgnuplot on Alt-F4 or pressing the 'close' button
- * stemmed here. */
- #ifndef WIN32
- #define WINEXPORT _export
- #else
- #define WINEXPORT
- #endif
-
- #define WDPROC WINAPI WINEXPORT
-
- #define WGNUPLOTVERSION "1.2 1996-01-18"
- BOOL WDPROC CheckWGNUPLOTVersion(LPSTR str);
-
- /* ================================== */
- /* symbols for the two icons */
- #define TEXTICON 123
- #define GRPICON 124
-
- /* ================================== */
- /* For WIN32 API's */
- #ifdef WIN32
- /* #define DEFAULT_CHARSET ANSI_CHARSET */
- #define OFFSETOF(x) (x)
- #define SELECTOROF(x) (x)
- #define MoveTo(hdc,x,y) MoveToEx(hdc,x,y,(LPPOINT)NULL);
- # ifndef __TURBOC__ /* Borland C has these defines, already... */
- #define farmalloc(x) malloc(x)
- #define farrealloc(s,n) realloc(s,n)
- #define farfree(s) free(s)
- # endif /* __TURBOC__ */
- #endif
-
- #ifdef __MINGW32__
- /* HBB 980809: MinGW32 doesn't define some of the more traditional
- * things gnuplot expects in every Windows C compiler, it seems: */
- typedef LOGPEN *LPLOGPEN;
- typedef HGLOBAL GLOBALHANDLE;
- #define WINVER 0x0400
- #define HFILE_ERROR ((HFILE)-1)
-
- /* the far mem/string function family: */
- #define _fstrstr(s1,s2) (strstr(s1,s2))
- #define _fstrchr(s,c) (strchr(s,c))
- #define _fstrrchr(s,c) (strrchr(s,c))
- #define _fstrlen(s) (strlen(s))
- #define _fstrcpy(d,s) (strcpy(d,s))
- #define _fstrncpy(d,s,n) (strncpy(d,s,n))
- #define _fstrcat(s1,s2) (strcat(s1,s2))
- #define _fmemset(s,c,n) (memset(s,c,n))
- #define _fmemmove(d,s,n) (memmove(d,s,n))
-
- #endif /* __MINGW32__ */
- /* ================================== */
- /* wprinter.c - windows printer routines */
- void WDPROC DumpPrinter(HWND hwnd, LPSTR szAppName, LPSTR szFileName);
-
- typedef struct tagPRINT {
- HDC hdcPrn;
- HWND hDlgPrint;
- BOOL bUserAbort;
- POINT pdef;
- POINT psize;
- POINT poff;
- struct tagPRINT FAR *next;
- } PRINT;
- typedef PRINT FAR* LPPRINT;
-
- /* ================================== */
- /* wpause.c - pause window structure */
- typedef struct tagPW
- {
- HINSTANCE hInstance; /* required */
- HINSTANCE hPrevInstance; /* required */
- LPSTR Title; /* required */
- LPSTR Message; /* required */
- POINT Origin; /* optional */
- HWND hWndParent; /* optional */
- HWND hWndPause;
- HWND hOK;
- HWND hCancel;
- BOOL bPause;
- BOOL bPauseCancel;
- BOOL bDefOK;
- WNDPROC lpfnOK;
- WNDPROC lpfnCancel;
- WNDPROC lpfnPauseButtonProc;
- } PW;
- typedef PW FAR* LPPW;
-
- int WDPROC PauseBox(LPPW lppw);
-
- /* ================================== */
- /* wmenu.c - menu structure */
- #define BUTTONMAX 10
- typedef struct tagMW
- {
- LPSTR szMenuName; /* required */
- HMENU hMenu;
- BYTE FAR * FAR *macro;
- BYTE FAR *macrobuf;
- int nCountMenu;
- DLGPROC lpProcInput;
- char *szPrompt;
- char *szAnswer;
- int nChar;
- int nButton;
- HWND hButton[BUTTONMAX];
- int hButtonID[BUTTONMAX];
- WNDPROC lpfnMenuButtonProc;
- WNDPROC lpfnButtonProc[BUTTONMAX];
- } MW;
- typedef MW FAR * LPMW;
-
- /* ================================== */
- /* wtext.c text window structure */
- /* If an optional item is not specified it must be zero */
- #define MAXFONTNAME 80
- typedef struct tagTW
- {
- LPPRINT lpr; /* must be first */
- HINSTANCE hInstance; /* required */
- HINSTANCE hPrevInstance; /* required */
- LPSTR Title; /* required */
- LPMW lpmw; /* optional */
- POINT ScreenSize; /* optional */
- unsigned int KeyBufSize; /* optional */
- LPSTR IniFile; /* optional */
- LPSTR IniSection; /* optional */
- LPSTR DragPre; /* optional */
- LPSTR DragPost; /* optional */
- int nCmdShow; /* optional */
- FARPROC shutdown; /* optional */
- HICON hIcon; /* optional */
- LPSTR AboutText; /* optional */
- HMENU hPopMenu;
- HWND hWndText;
- HWND hWndParent;
- POINT Origin;
- POINT Size;
- BYTE FAR *ScreenBuffer;
- BYTE FAR *AttrBuffer;
- BYTE FAR *KeyBuf;
- BYTE FAR *KeyBufIn;
- BYTE FAR *KeyBufOut;
- BYTE Attr;
- BOOL bFocus;
- BOOL bGetCh;
- BOOL bSysColors;
- HBRUSH hbrBackground;
- char fontname[MAXFONTNAME]; /* font name */
- int fontsize; /* font size in pts */
- HFONT hfont;
- int CharAscent;
- int ButtonHeight;
- int CaretHeight;
- int CursorFlag;
- POINT CursorPos;
- POINT ClientSize;
- POINT CharSize;
- POINT ScrollPos;
- POINT ScrollMax;
- POINT MarkBegin;
- POINT MarkEnd;
- BOOL Marking;
- } TW;
- typedef TW FAR* LPTW;
-
-
- /* ================================== */
- /* wtext.c - Text Window */
- void WDPROC TextMessage(void);
- int WDPROC TextInit(LPTW lptw);
- void WDPROC TextClose(LPTW lptw);
- void WDPROC TextToCursor(LPTW lptw);
- int WDPROC TextKBHit(LPTW);
- int WDPROC TextGetCh(LPTW);
- int WDPROC TextGetChE(LPTW);
- LPSTR WDPROC TextGetS(LPTW lptw, LPSTR str, unsigned int size);
- int WDPROC TextPutCh(LPTW, BYTE);
- int WDPROC TextPutS(LPTW lptw, LPSTR str);
- void WDPROC TextGotoXY(LPTW lptw, int x, int y);
- int WDPROC TextWhereX(LPTW lptw);
- int WDPROC TextWhereY(LPTW lptw);
- void WDPROC TextCursorHeight(LPTW lptw, int height);
- void WDPROC TextClearEOL(LPTW lptw);
- void WDPROC TextClearEOS(LPTW lptw);
- void WDPROC TextInsertLine(LPTW lptw);
- void WDPROC TextDeleteLine(LPTW lptw);
- void WDPROC TextScrollReverse(LPTW lptw);
- void WDPROC TextAttr(LPTW lptw, BYTE attr);
- void WDPROC AboutBox(HWND hwnd, LPSTR str);
-
- /* ================================== */
- /* wgraph.c - graphics window */
-
- /* windows data */
- #define WGNUMPENS 15
-
- #define GWOPMAX 4096
- /* GWOP is 8 bytes long. Array of GWOP kept in global block */
- struct GWOP {
- WORD op;
- WORD x, y;
- HLOCAL htext;
- };
-
- /* memory block for graph operations */
- struct GWOPBLK { /* kept in local memory */
- struct GWOPBLK *next;
- HGLOBAL hblk; /* handle to a global block */
- struct GWOP FAR *gwop; /* pointer to global block if locked */
- UINT used; /* number of GWOP's used */
- };
-
- /* ops */
- #define W_endoflist 0
- #define W_dot 10
- #define W_diamond 11
- #define W_plus 12
- #define W_box 13
- #define W_cross 14
- #define W_triangle 15
- #define W_star 16
- #define W_circle 17
- #define W_fcircle 18
- #define W_fbox 19
- #define W_fdiamond 20
- #define W_fitriangle 21
- #define W_itriangle 22
- #define W_move 30
- #define W_vect 31
- #define W_line_type 32
- #define W_put_text 33
- #define W_justify 34
- #define W_text_angle 35
- #define W_pointsize 36
-
- typedef struct tagGW {
- LPPRINT lpr; /* must be first */
- HINSTANCE hInstance; /* required */
- HINSTANCE hPrevInstance; /* required */
- LPSTR Title; /* required */
- int xmax; /* required */
- int ymax; /* required */
- LPTW lptw; /* optional */ /* associated text window */
- POINT Origin; /* optional */ /* origin of graph window */
- POINT Size; /* optional */ /* size of graph window */
- LPSTR IniFile; /* optional */
- LPSTR IniSection; /* optional */
- HWND hWndGraph; /* window handle */
- HMENU hPopMenu; /* popup menu */
- int numsolid; /* number of solid pen styles */
- int pen; /* current pen number */
- int htic; /* horizontal size of point symbol (xmax units) */
- int vtic; /* vertical size of point symbol (ymax units)*/
- int hchar; /* horizontal size of character (xmax units) */
- int vchar; /* vertical size of character (ymax units)*/
- int angle; /* text angle */
- BOOL rotate; /* can text be rotated 90 degrees ? */
- char fontname[MAXFONTNAME]; /* font name */
- int fontsize; /* font size in pts */
- HFONT hfonth; /* horizonal font */
- HFONT hfontv; /* vertical font */
- BOOL resized; /* has graph window been resized? */
- BOOL graphtotop; /* bring graph window to top after every plot? */
- BOOL color; /* color pens? */
- HPEN hbpen; /* border pen */
- HPEN hapen; /* axis pen */
- HPEN hpen[WGNUMPENS]; /* pens */
- #if 1 /* HBB 980118: new try ... */
- HPEN hsolidpen[WGNUMPENS]; /* solid pens (for point symbols) */
- #endif
- LOGPEN colorpen[WGNUMPENS+2]; /* logical color pens */
- LOGPEN monopen[WGNUMPENS+2]; /* logical mono pens */
- COLORREF background; /* background color */
- HBRUSH hbrush; /* background brush */
- HBRUSH colorbrush[WGNUMPENS+2]; /* brushes to fill points */
- struct GWOPBLK *gwopblk_head;
- struct GWOPBLK *gwopblk_tail;
- unsigned int nGWOP;
- BOOL locked; /* locked if being written */
- double org_pointsize; /* Original Pointsize */
- } GW;
- typedef GW FAR* LPGW;
-
- #define WINFONTSIZE 10
- #define WIN30FONT "Courier"
- #define WINFONT "Arial"
-
- #ifndef LEFT
- #define LEFT 0
- #endif
- #ifndef CENTRE
- #define CENTRE 1
- #endif
- #ifndef RIGHT
- #define RIGHT 2
- #endif
-
- void WDPROC GraphInit(LPGW lpgw);
- void WDPROC GraphClose(LPGW lpgw);
- void WDPROC GraphStart(LPGW lpgw, double pointsize);
- void WDPROC GraphEnd(LPGW lpgw);
- void WDPROC GraphResume(LPGW lpgw);
- void WDPROC GraphOp(LPGW lpgw, WORD op, WORD x, WORD y, LPSTR str);
- void WDPROC GraphPrint(LPGW lpgw);
- void WDPROC GraphRedraw(LPGW lpgw);
-
- /* ================================== */
-